 1.Druid 部署
   
   Druid官网：https://druid.apache.org/
   下载 Druid 安装包、并解压缩：
   cd /opt/lagou/software
   wget http://apache.communilink.net/druid/0.19.0/apache-druid-0.19.0-bin.tar.gz
   tar -zxvf apache-druid-0.19.0-bin.tar.gz
   
   查看主目录：
   tree -L 1 ./
./
├── bin                  运行相关脚本文件
├── conf          		 生产环境配置文件
├── extensions           各种jar包，第三方扩展
├── hadoop-dependencies  hadoop相关依赖
├── lib          		 Druid所有核心软件包
├── LICENSE        		 许可证
├── licenses
├── NOTICE         		 对快速入门很有用帮助的文档
├── quickstart      	 单机测试部署用到的配置及数据
├── README        
└── var          		 启动时生成文件，数据文件在这里了

   1).单服务器部署
   单服务器部署的配置文件：
conf/druid/single-server/
├── large
├── medium
├── micro-quickstart
├── nano-quickstart
├── small
└── xlarge 

   单服务器参考配置：
Nano-Quickstart：1个CPU，4GB RAM
 	启动命令： bin/start-nano-quickstart
 	配置目录： conf/druid/single-server/nano-quickstart/*
微型快速入门：4个CPU，16GB RAM
 	启动命令： bin/start-micro-quickstart
 	配置目录： conf/druid/single-server/micro-quickstart/*
小型：8 CPU，64GB RAM（〜i3.2xlarge）
 	启动命令： bin/start-small
 	配置目录： conf/druid/single-server/small/*
中：16 CPU，128GB RAM（〜i3.4xlarge）
 	启动命令： bin/start-medium
 	配置目录： conf/druid/single-server/medium/*
大型：32 CPU，256GB RAM（〜i3.8xlarge）
 	启动命令： bin/start-large
 	配置目录： conf/druid/single-server/large/*
大型X：64 CPU，512GB RAM（〜i3.16xlarge）
 	启动命令： bin/start-xlarge
 	配置目录： conf/druid/single-server/xlarge/*   
*/
   启动Druid：
   ./bin/start-nano-quickstart start
   登录http://linux121:8888/查看页面
   使用jps可以看见启动了很多服务：
   官方建议大型系统采用集群模式部署，以实现容错和减少资源争用。
   2).集群部署
   (1).部署规划
   集群部署采用的分配如下：
       主节点部署 Coordinator 和 Overlord进程
       数据节点运行 Historical 和 MiddleManager进程
	   查询节点 部署 Broker 和 Router 进程
   主机       Druid服务                     其他服务
   linux121 Coordinator、Overlord     Zookeeper、Kafka
   linux122 Historical、MiddleManager Zookeeper、Kafka
   linux123 Router、Broker            Zookeeper、Kafka、MySQL   
   虚拟机每个节点2core、3G
   DeepStorage：Hadoop 2.9.2
   2).设置环境变量
   vim /etc/profile
# 在文件中增加以下内容
export DRUID_HOME=/opt/lagou/servers/druid-0.19.0
export PATH=$PATH:$DRUID_HOME/bin
   3).MySQL中创建相关数据库
   使用 root 账号登录MySQL， mysql -uroot -p12345678
CREATE DATABASE druid DEFAULT CHARACTER SET utf8mb4;
CREATE USER 'druid'@'%' IDENTIFIED BY '12345678';
GRANT ALL PRIVILEGES ON druid.* TO 'druid'@'%';
-- ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
set global validate_password_policy=0;
   4).配置Druid参数
   将hadoop配置文件core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml链接到
conf/druid/cluster/_common/ 下
   cd /opt/lagou/servers/druid-0.19.0/conf/druid/cluster/_common
ln -s $HADOOP_HOME/etc/hadoop/core-site.xml core-site.xml
ln -s $HADOOP_HOME/etc/hadoop/hdfs-site.xml hdfs-site.xml
ln -s $HADOOP_HOME/etc/hadoop/yarn-site.xml yarn-site.xml
ln -s $HADOOP_HOME/etc/hadoop/mapred-site.xml mapred-site.xml

   将MySQL的驱动程序，链接到 $DRUID_HOME/extensions/mysql-metadata-storage/ 下
ln -s $HIVE_HOME/lib/mysql-connector-java-5.1.46.jar mysql-connector-java-5.1.46.jar
   修改配置文件($DRUID_HOME/conf/druid/cluster/_common/common.runtime.properties)
# 增加"mysql-metadata-storage"
druid.extensions.loadList=["mysql-metadata-storage", "druid-hdfs-storage", 
"druid-kafka-indexing-service", "druid-datasketches"]

# 每台机器写自己的ip或hostname
druid.host=linux121

# 填写zk地址
druid.zk.service.host=linux121:2181,linux122:2181,linux123:2181
druid.zk.paths.base=/druid

# 注释掉前面 derby 的配置
# 增加 mysql 的配置
druid.metadata.storage.type=mysql
druid.metadata.storage.connector.connectURI=jdbc:mysql://linux123:3306/druid
druid.metadata.storage.connector.user=druid
druid.metadata.storage.connector.password=12345678

# 注释掉local的配置
# 增加HDFS的配置，即使用HDFS作为深度存储
druid.storage.type=hdfs
druid.storage.storageDirectory=/druid/segments

# 注释掉 indexer.logs For local disk的配置
# 增加 indexer.logs For HDFS 的配置
druid.indexer.logs.type=hdfs
druid.indexer.logs.directory=/druid/indexing-logs   
   
   配置主节点文件(参数大小根据实际情况配置)
   $DRUID_HOME/conf/druid/cluster/master/coordinator-overlord/jvm.config
-server
-Xms512m
-Xmx512m
-XX:+ExitOnOutOfMemoryError
-XX:+UseG1GC
-Duser.timezone=UTC+8
-Dfile.encoding=UTF-8
-Djava.io.tmpdir=var/tmp
-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager

   配置数据节点文件(参数大小根据实际情况配置)
   $DRUID_HOME/conf/druid/cluster/data/historical/jvm.config
-server
-Xms512m
-Xmx512m
-XX:MaxDirectMemorySize=1g
-XX:+ExitOnOutOfMemoryError
-Duser.timezone=UTC+8
-Dfile.encoding=UTF-8
-Djava.io.tmpdir=var/tmp
-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager

   $DRUID_HOME/conf/druid/cluster/data/historical/runtime.properties
# 修改这一个参数
druid.processing.buffer.sizeBytes=50000000

   备注：druid.processing.buffer.sizeBytes 每个查询用于聚合的堆外哈希表的大小
maxDirectMemory= druid.processing.buffer.sizeBytes * (druid.processing.numMergeBuffers +
druid.processing.numThreads + 1)
   如果 druid.processing.buffer.sizeBytes 太大，那么需要加大maxDirectMemory，否则 historical 服务无法启动
   
   $DRUID_HOME/conf/druid/cluster/data/middleManager/jvm.config
-server
-Xms128m
-Xmx128m
-XX:+ExitOnOutOfMemoryError
-Duser.timezone=UTC+8
-Dfile.encoding=UTF-8
-Djava.io.tmpdir=var/tmp
-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager
   
   配置查询节点文件(参数大小根据实际情况配置)
   $DRUID_HOME/conf/druid/cluster/query/broker/jvm.config
-server
-Xms512m
-Xmx512m
-XX:MaxDirectMemorySize=512m
-XX:+ExitOnOutOfMemoryError
-Duser.timezone=UTC+8
-Dfile.encoding=UTF-8
-Djava.io.tmpdir=var/tmp
-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager
   
   $DRUID_HOME/conf/druid/cluster/query/broker/runtime.properties
# 修改这一个参数
druid.processing.buffer.sizeBytes=50000000
   
   备注：
druid.processing.buffer.sizeBytes 每个查询用于聚合的堆外哈希表的大小
maxDirectMemory = druid.processing.buffer.sizeBytes*(druid.processing.numMergeBuffers +
druid.processing.numThreads + 1)
   如果 druid.processing.buffer.sizeBytes 太大，那么需要加大maxDirectMemory，否则 broker 服务无法启动
   
   $DRUID_HOME/conf/druid/cluster/query/router/jvm.config
-server
-Xms128m
-Xmx128m
-XX:+UseG1GC
-XX:MaxDirectMemorySize=128m
-XX:+ExitOnOutOfMemoryError
-Duser.timezone=UTC+8
-Dfile.encoding=UTF-8
-Djava.io.tmpdir=var/tmp
-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager
   
   小结：各服务 JVM 内存分配设置如下：
       coordinator-overlord，512m
       historical，512m、堆外1g
	   middleManager，128m
	   broker，512m、堆外 512m
	   router，128m、堆外 128m
   5).分发并启动服务
   向linux122、linux123分发安装包
   scp -r druid-0.19.0/ linux122:$PWD
   scp -r druid-0.19.0/ linux123:$PWD
   备注：
   分发后一定要修改 common.runtime.properties 中的 druid.host 为所在节点的ip
   在linux122、linux123上添加环境变量 $DRUID_HOME
   
   先启动zk的服务：
   # linux121
   zk.sh start
   
   在主节点（linux121）上启动服务：
   nohup start-cluster-master-no-zk-server &
   使用jps检查可看见1个名为Main的后台进程，如下图所示：
root       7867   7849 33 01:21 ?        00:00:12 
/opt/lagou/servers/jdk1.8.0_231/bin/java 
-server -Xms512m -Xmx512m 
-XX:+ExitOnOutOfMemoryError 
-XX:+UseG1GC 
-Duser.timezone=UTC 
-Dfile.encoding=UTF-8 
-Djava.io.tmpdir=var/tmp 
-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager 
-cp 
/opt/lagou/servers/druid-0.19.0/conf/druid/cluster/master/coordinator-overlord:
/opt/lagou/servers/druid-0.19.0/conf/druid/cluster/master/_common:
/opt/lagou/servers/druid-0.19.0/conf/druid/cluster/master/_common/hadoop-xml:
/opt/lagou/servers/druid-0.19.0/conf/druid/cluster/master/../_common:
/opt/lagou/servers/druid-0.19.0/conf/druid/cluster/master/../_common/hadoop-xml:
/opt/lagou/servers/druid-0.19.0/bin/../lib/* 
org.apache.druid.cli.Main server coordinator
root       8060   1449  0 01:21 pts/0    00:00:00 grep --color=auto 7867

*/   
   在数据节点（linux122）上启动服务：
   nohup start-cluster-data-server &
   使用jps检查可看见2个名为Main的后台进程，如下图所示：
root      20394  20376 41 01:22 ?        00:00:11 
/opt/lagou/servers/jdk1.8.0_231/bin/java 
-server -Xms512m -Xmx512m 
-XX:MaxDirectMemorySize=1g 
-XX:+ExitOnOutOfMemoryError 
-Duser.timezone=UTC+8 
-Dfile.encoding=UTF-8 
-Djava.io.tmpdir=var/tmp 
-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager 
-cp 
/opt/lagou/servers/druid-0.19.0/conf/druid/cluster/data/historical:
/opt/lagou/servers/druid-0.19.0/conf/druid/cluster/data/_common:
/opt/lagou/servers/druid-0.19.0/conf/druid/cluster/data/_common/hadoop-xml:
/opt/lagou/servers/druid-0.19.0/conf/druid/cluster/data/../_common:
/opt/lagou/servers/druid-0.19.0/conf/druid/cluster/data/../_common/hadoop-xml:
/opt/lagou/servers/druid-0.19.0/bin/../lib/* 
org.apache.druid.cli.Main server historical
root      20395  20376 41 01:22 ?        00:00:11 
/opt/lagou/servers/jdk1.8.0_231/bin/java 
-server -Xms128m -Xmx128m -XX:+ExitOnOutOfMemoryError 
-Duser.timezone=UTC+8 -Dfile.encoding=UTF-8 
-Djava.io.tmpdir=var/tmp 
-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager 
-cp 
/opt/lagou/servers/druid-0.19.0/conf/druid/cluster/data/middleManager:
/opt/lagou/servers/druid-0.19.0/conf/druid/cluster/data/_common:
/opt/lagou/servers/druid-0.19.0/conf/druid/cluster/data/_common/hadoop-xml:
/opt/lagou/servers/druid-0.19.0/conf/druid/cluster/data/../_common:
/opt/lagou/servers/druid-0.19.0/conf/druid/cluster/data/../_common/hadoop-xml:
/opt/lagou/servers/druid-0.19.0/bin/../lib/* 
org.apache.druid.cli.Main server middleManager
root      20759   1457  0 01:22 pts/0    00:00:00 grep --color=auto Main

*/   
   在查询节点（linux123）上启动服务：
   nohup start-cluster-query-server &
   使用jps检查可看见2个名为Main的后台进程，如下图所示：
root      14188  14170 43 01:23 ?        00:00:14 
/opt/lagou/servers/jdk1.8.0_231/bin/java 
-server -Xms512m -Xmx512m 
-XX:MaxDirectMemorySize=512m 
-XX:+ExitOnOutOfMemoryError 
-Duser.timezone=UTC+8 
-Dfile.encoding=UTF-8 
-Djava.io.tmpdir=var/tmp 
-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager 
-cp 
/opt/lagou/servers/druid-0.19.0/conf/druid/cluster/query/broker:
/opt/lagou/servers/druid-0.19.0/conf/druid/cluster/query/_common:
/opt/lagou/servers/druid-0.19.0/conf/druid/cluster/query/_common/hadoop-xml:
/opt/lagou/servers/druid-0.19.0/conf/druid/cluster/query/../_common:
/opt/lagou/servers/druid-0.19.0/conf/druid/cluster/query/../_common/hadoop-xml:
/opt/lagou/servers/druid-0.19.0/bin/../lib/* 
org.apache.druid.cli.Main server broker
root      14189  14170 36 01:23 ?        00:00:11
/opt/lagou/servers/jdk1.8.0_231/bin/java 
-server -Xms128m -Xmx128m 
-XX:+UseG1GC 
-XX:MaxDirectMemorySize=128m 
-XX:+ExitOnOutOfMemoryError 
-Duser.timezone=UTC+8 
-Dfile.encoding=UTF-8 
-Djava.io.tmpdir=var/tmp 
-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager 
-cp 
/opt/lagou/servers/druid-0.19.0/conf/druid/cluster/query/router:
/opt/lagou/servers/druid-0.19.0/conf/druid/cluster/query/_common:
/opt/lagou/servers/druid-0.19.0/conf/druid/cluster/query/_common/hadoop-xml:
/opt/lagou/servers/druid-0.19.0/conf/druid/cluster/query/../_common:
/opt/lagou/servers/druid-0.19.0/conf/druid/cluster/query/../_common/hadoop-xml:
/opt/lagou/servers/druid-0.19.0/bin/../lib/* 
org.apache.druid.cli.Main server router
root      14670  12913  0 01:23 pts/1    00:00:00 grep --color=auto Main 

*/
   关闭服务：
   # 在各个节点运行
   cd /opt/lagou/servers/druid-0.19.0/bin
   ./service --down
   6).查看界面
   使用浏览器查看：http://linux123:8888/